/* eslint-disable no-undef */
const Multipart = require('./Multipart')
/**
 * 多文件上传
 * url: 上传路径 必传
 * data: 上传json参数
 * jsonKey: 后台接收参数的key
 * count: 文件最多上传几张
 * type: 选取文件类型
 * extension: 选取文件类型 字符串数组 根据文件拓展名过滤，仅 type==file 时有效。每一项都不能是空字符串。默认不过滤。
 * header 请求头信息
 */
function filesJsonPost({
	url,
	data = {},
	jsonKey = 'jsonReport',
	count = 9,
	type = 'all',
	extension = [null],
	header = {}
} = {}) {
	return new Promise((resolve, reject) => {
		if (!url) {
			reject(new Error('请求地址不能为空！'))
			return
		}
		// console.log("data:"+data)

		wx.chooseMessageFile({
			count: count, //最多可以选择的文件个数
			type: type, //所选的文件的类型
			extension: extension, //根据文件拓展名过滤，仅 type==file 时有效
			success(res) {
				//接口调用成功的回调函数
				console.log('获取图片成功：', JSON.stringify(res))
				let tempFiles = res.tempFiles.map((tempPath) => {
					return {
						filePath: tempPath.path,
						name: tempPath.name
					}
				})
				// console.log("typeof:",typeof data)
				let dataStr = typeof data === 'string' ? data : JSON.stringify(data)
				let params = encodeURI(dataStr).replace(/\+/g, '%2B')
				var postJson = [
					{
						name: jsonKey,
						value: params
					}
				]
				// console.log("postJson:",postJson)
				// console.log("postJson:",JSON.stringify(postJson))

				new Multipart({
					files: tempFiles,
					fields: postJson
				})
					.submit(url, { header })
					.then(
						(res) => {
							resolve(res)
						},
						(err) => {
							reject(err)
						}
					)
			},
			fail(err) {
				//接口调用失败的回调函数
				reject(new Error('获取图片失败：' + JSON.stringify(err)))
			}
		})
	})
}

module.exports = {
	filesJsonPost: filesJsonPost
}
